package org.fisco.bcos.evidence.contract;

import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

import org.fisco.bcos.sdk.abi.FunctionReturnDecoder;
import org.fisco.bcos.sdk.abi.TypeReference;
import org.fisco.bcos.sdk.abi.datatypes.DynamicArray;
import org.fisco.bcos.sdk.abi.datatypes.Event;
import org.fisco.bcos.sdk.abi.datatypes.Function;
import org.fisco.bcos.sdk.abi.datatypes.Type;
import org.fisco.bcos.sdk.abi.datatypes.Utf8String;
import org.fisco.bcos.sdk.abi.datatypes.generated.Int256;
import org.fisco.bcos.sdk.abi.datatypes.generated.Uint256;
import org.fisco.bcos.sdk.abi.datatypes.generated.tuples.generated.Tuple1;
import org.fisco.bcos.sdk.abi.datatypes.generated.tuples.generated.Tuple4;
import org.fisco.bcos.sdk.client.Client;
import org.fisco.bcos.sdk.contract.Contract;
import org.fisco.bcos.sdk.crypto.CryptoSuite;
import org.fisco.bcos.sdk.crypto.keypair.CryptoKeyPair;
import org.fisco.bcos.sdk.eventsub.EventCallback;
import org.fisco.bcos.sdk.model.CryptoType;
import org.fisco.bcos.sdk.model.TransactionReceipt;
import org.fisco.bcos.sdk.model.callback.TransactionCallback;
import org.fisco.bcos.sdk.transaction.model.exception.ContractException;

@SuppressWarnings("unchecked")
public class EvidenceTable extends Contract {
    public static final String[] BINARY_ARRAY = {"60806040523480156200001157600080fd5b50611001600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166356004b6a6040805190810160405280600b81526020017f745f65766964656e6365320000000000000000000000000000000000000000008152506040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016200010391906200024c565b602060405180830381600087803b1580156200011e57600080fd5b505af115801562000133573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525062000159919081019062000176565b50620002f6565b60006200016e8251620002a5565b905092915050565b6000602082840312156200018957600080fd5b6000620001998482850162000160565b91505092915050565b6000620001af826200029a565b808452620001c5816020860160208601620002af565b620001d081620002e5565b602085010191505092915050565b6000600382527f6b657900000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000601082527f6f776e65722c646174612c6568617368000000000000000000000000000000006020830152604082019050919050565b60006060820190508181036000830152620002688184620001a2565b905081810360208301526200027d81620001de565b90508181036040830152620002928162000215565b905092915050565b600081519050919050565b6000819050919050565b60005b83811015620002cf578082015181840152602081019050620002b2565b83811115620002df576000848401525b50505050565b6000601f19601f8301169050919050565b6118c280620003066000396000f300608060405260043610610057576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632f12f5901461005c578063a216464b14610099578063fcd7e3c1146100d6575b600080fd5b34801561006857600080fd5b50610083600480360361007e91908101906110f2565b610116565b6040516100909190611429565b60405180910390f35b3480156100a557600080fd5b506100c060048036036100bb9190810190611174565b61026a565b6040516100cd919061144b565b60405180910390f35b3480156100e257600080fd5b506100fd60048036036100f891908101906110f2565b6107fb565b60405161010d949392919061153a565b60405180910390f35b60606000826040518082805190602001908083835b602083101515610150578051825260208201915060208101905060208303925061012b565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020805480602002602001604051908101604052809291908181526020016000905b8282101561025f578382906000526020600020018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561024b5780601f106102205761010080835404028352916020019161024b565b820191906000526020600020905b81548152906001019060200180831161022e57829003601f168201915b5050505050815260200190600101906101a3565b505050509050919050565b600080600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f23f63c96040805190810160405280600b81526020017f745f65766964656e6365320000000000000000000000000000000000000000008152506040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161031c9190611481565b602060405180830381600087803b15801561033657600080fd5b505af115801561034a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061036e91908101906110a0565b92508273ffffffffffffffffffffffffffffffffffffffff166313db93466040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1580156103d457600080fd5b505af11580156103e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061040c9190810190611077565b91508173ffffffffffffffffffffffffffffffffffffffff1663e942b516896040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016104639190611610565b600060405180830381600087803b15801561047d57600080fd5b505af1158015610491573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff1663e942b516886040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016104ea91906115bb565b600060405180830381600087803b15801561050457600080fd5b505af1158015610518573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff1663e942b516876040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016105719190611665565b600060405180830381600087803b15801561058b57600080fd5b505af115801561059f573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff1663e942b516866040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016105f891906116ba565b600060405180830381600087803b15801561061257600080fd5b505af1158015610626573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff166331afac3689846040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016106819291906114d3565b602060405180830381600087803b15801561069b57600080fd5b505af11580156106af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506106d391908101906110c9565b90507fc57b01fa77f41df77eaab79a0e2623fab2e7ae3e9530d9b1cab225ad65f2b7ce81604051610704919061144b565b60405180910390a16000876040518082805190602001908083835b602083101515610744578051825260208201915060208101905060208303925061071f565b6001836020036101000a03801982511681845116808217855250505050505090500191505090815260200160405180910390208890806001815401808255809150509060018203906000526020600020016000909192909190915090805190602001906107b2929190610e70565b50507f18a58e3ad3f35a3b90e2f8e966d8dc25f4ad3fc6103d4861555a68eb4d4a211c87896040516107e5929190611503565b60405180910390a1809350505050949350505050565b606080606080600080606080606080600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f23f63c96040805190810160405280600b81526020017f745f65766964656e6365320000000000000000000000000000000000000000008152506040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016108b99190611481565b602060405180830381600087803b1580156108d357600080fd5b505af11580156108e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061090b91908101906110a0565b97508773ffffffffffffffffffffffffffffffffffffffff16637857d7c96040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561097157600080fd5b505af1158015610985573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506109a99190810190611025565b96508773ffffffffffffffffffffffffffffffffffffffff1663e8434e398e896040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401610a029291906114a3565b602060405180830381600087803b158015610a1c57600080fd5b505af1158015610a30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610a54919081019061104e565b915060008273ffffffffffffffffffffffffffffffffffffffff1663949d225d6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015610abc57600080fd5b505af1158015610ad0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610af491908101906110c9565b1315610e55578173ffffffffffffffffffffffffffffffffffffffff1663846719e060006040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401610b509190611466565b602060405180830381600087803b158015610b6a57600080fd5b505af1158015610b7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610ba29190810190611077565b90508073ffffffffffffffffffffffffffffffffffffffff16639c981fcb6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401610bf7906115f0565b600060405180830381600087803b158015610c1157600080fd5b505af1158015610c25573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250610c4e9190810190611133565b95508073ffffffffffffffffffffffffffffffffffffffff16639c981fcb6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401610ca39061159b565b600060405180830381600087803b158015610cbd57600080fd5b505af1158015610cd1573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250610cfa919081019061113356", "5b94508073ffffffffffffffffffffffffffffffffffffffff16639c981fcb6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401610d4f90611645565b600060405180830381600087803b158015610d6957600080fd5b505af1158015610d7d573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250610da69190810190611133565b93508073ffffffffffffffffffffffffffffffffffffffff16639c981fcb6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401610dfb9061169a565b600060405180830381600087803b158015610e1557600080fd5b505af1158015610e29573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250610e529190810190611133565b92505b858585859b509b509b509b5050505050505050509193509193565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10610eb157805160ff1916838001178555610edf565b82800160010185558215610edf579182015b82811115610ede578251825591602001919060010190610ec3565b5b509050610eec9190610ef0565b5090565b610f1291905b80821115610f0e576000816000905550600101610ef6565b5090565b90565b6000610f2182516117ad565b905092915050565b6000610f3582516117bf565b905092915050565b6000610f4982516117d1565b905092915050565b6000610f5d82516117e3565b905092915050565b6000610f7182516117f5565b905092915050565b600082601f8301121515610f8c57600080fd5b8135610f9f610f9a8261171c565b6116ef565b91508082526020830160208301858383011115610fbb57600080fd5b610fc6838284611835565b50505092915050565b600082601f8301121515610fe257600080fd5b8151610ff5610ff08261171c565b6116ef565b9150808252602083016020830185838301111561101157600080fd5b61101c838284611844565b50505092915050565b60006020828403121561103757600080fd5b600061104584828501610f15565b91505092915050565b60006020828403121561106057600080fd5b600061106e84828501610f29565b91505092915050565b60006020828403121561108957600080fd5b600061109784828501610f3d565b91505092915050565b6000602082840312156110b257600080fd5b60006110c084828501610f51565b91505092915050565b6000602082840312156110db57600080fd5b60006110e984828501610f65565b91505092915050565b60006020828403121561110457600080fd5b600082013567ffffffffffffffff81111561111e57600080fd5b61112a84828501610f79565b91505092915050565b60006020828403121561114557600080fd5b600082015167ffffffffffffffff81111561115f57600080fd5b61116b84828501610fcf565b91505092915050565b6000806000806080858703121561118a57600080fd5b600085013567ffffffffffffffff8111156111a457600080fd5b6111b087828801610f79565b945050602085013567ffffffffffffffff8111156111cd57600080fd5b6111d987828801610f79565b935050604085013567ffffffffffffffff8111156111f657600080fd5b61120287828801610f79565b925050606085013567ffffffffffffffff81111561121f57600080fd5b61122b87828801610f79565b91505092959194509250565b600061124282611755565b8084526020840193508360208202850161125b85611748565b60005b84811015611294578383038852611276838351611317565b925061128182611776565b915060208801975060018101905061125e565b508196508694505050505092915050565b6112ae816117ff565b82525050565b6112bd81611811565b82525050565b6112cc816117a3565b82525050565b6112db81611823565b82525050565b60006112ec8261176b565b808452611300816020860160208601611844565b61130981611877565b602085010191505092915050565b600061132282611760565b808452611336816020860160208601611844565b61133f81611877565b602085010191505092915050565b6000600582527f6f776e65720000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000600382527f6b657900000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000600482527f64617461000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000600582527f65686173680000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600060208201905081810360008301526114438184611237565b905092915050565b600060208201905061146060008301846112c3565b92915050565b600060208201905061147b60008301846112d2565b92915050565b6000602082019050818103600083015261149b8184611317565b905092915050565b600060408201905081810360008301526114bd81856112e1565b90506114cc60208301846112a5565b9392505050565b600060408201905081810360008301526114ed81856112e1565b90506114fc60208301846112b4565b9392505050565b6000604082019050818103600083015261151d81856112e1565b9050818103602083015261153181846112e1565b90509392505050565b6000608082019050818103600083015261155481876112e1565b9050818103602083015261156881866112e1565b9050818103604083015261157c81856112e1565b9050818103606083015261159081846112e1565b905095945050505050565b600060208201905081810360008301526115b48161134d565b9050919050565b600060408201905081810360008301526115d48161134d565b905081810360208301526115e881846112e1565b905092915050565b6000602082019050818103600083015261160981611384565b9050919050565b6000604082019050818103600083015261162981611384565b9050818103602083015261163d81846112e1565b905092915050565b6000602082019050818103600083015261165e816113bb565b9050919050565b6000604082019050818103600083015261167e816113bb565b9050818103602083015261169281846112e1565b905092915050565b600060208201905081810360008301526116b3816113f2565b9050919050565b600060408201905081810360008301526116d3816113f2565b905081810360208301526116e781846112e1565b905092915050565b6000604051905081810181811067ffffffffffffffff8211171561171257600080fd5b8060405250919050565b600067ffffffffffffffff82111561173357600080fd5b601f19601f8301169050602081019050919050565b6000602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006117b882611783565b9050919050565b60006117ca82611783565b9050919050565b60006117dc82611783565b9050919050565b60006117ee82611783565b9050919050565b6000819050919050565b600061180a82611783565b9050919050565b600061181c82611783565b9050919050565b600061182e826117a3565b9050919050565b82818337600083830152505050565b60005b83811015611862578082015181840152602081019050611847565b83811115611871576000848401525b50505050565b6000601f19601f83011690509190505600a265627a7a72305820bdf44d50337f6be36763116678ee3bcf08751ee1dae3d51732a58c8c820456b56c6578706572696d656e74616cf50037"};

    public static final String BINARY = org.fisco.bcos.sdk.utils.StringUtils.joinAll("", BINARY_ARRAY);

    public static final String[] SM_BINARY_ARRAY = {"60806040523480156200001157600080fd5b50611001600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c92a78016040805190810160405280600b81526020017f745f65766964656e6365320000000000000000000000000000000000000000008152506040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016200010391906200024c565b602060405180830381600087803b1580156200011e57600080fd5b505af115801562000133573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525062000159919081019062000176565b50620002f6565b60006200016e8251620002a5565b905092915050565b6000602082840312156200018957600080fd5b6000620001998482850162000160565b91505092915050565b6000620001af826200029a565b808452620001c5816020860160208601620002af565b620001d081620002e5565b602085010191505092915050565b6000600382527f6b657900000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000601082527f6f776e65722c646174612c6568617368000000000000000000000000000000006020830152604082019050919050565b60006060820190508181036000830152620002688184620001a2565b905081810360208301526200027d81620001de565b90508181036040830152620002928162000215565b905092915050565b600081519050919050565b6000819050919050565b60005b83811015620002cf578082015181840152602081019050620002b2565b83811115620002df576000848401525b50505050565b6000601f19601f8301169050919050565b6118c280620003066000396000f300608060405260043610610057576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680635b325d781461005c578063b8eaa08d1461009c578063c946678b146100d9575b600080fd5b34801561006857600080fd5b50610083600480360361007e91908101906110f2565b610116565b604051610093949392919061153a565b60405180910390f35b3480156100a857600080fd5b506100c360048036036100be9190810190611174565b61078b565b6040516100d0919061144b565b60405180910390f35b3480156100e557600080fd5b5061010060048036036100fb91908101906110f2565b610d1c565b60405161010d9190611429565b60405180910390f35b606080606080600080606080606080600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166359a48b656040805190810160405280600b81526020017f745f65766964656e6365320000000000000000000000000000000000000000008152506040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016101d49190611481565b602060405180830381600087803b1580156101ee57600080fd5b505af1158015610202573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061022691908101906110a0565b97508773ffffffffffffffffffffffffffffffffffffffff1663c74f8caf6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561028c57600080fd5b505af11580156102a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506102c49190810190611025565b96508773ffffffffffffffffffffffffffffffffffffffff1663d8ac59578e896040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161031d9291906114a3565b602060405180830381600087803b15801561033757600080fd5b505af115801561034b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061036f919081019061104e565b915060008273ffffffffffffffffffffffffffffffffffffffff1663d3e9af5a6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1580156103d757600080fd5b505af11580156103eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061040f91908101906110c9565b1315610770578173ffffffffffffffffffffffffffffffffffffffff16633dd2b61460006040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161046b9190611466565b602060405180830381600087803b15801561048557600080fd5b505af1158015610499573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506104bd9190810190611077565b90508073ffffffffffffffffffffffffffffffffffffffff16639bca41e86040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401610512906115f0565b600060405180830381600087803b15801561052c57600080fd5b505af1158015610540573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506105699190810190611133565b95508073ffffffffffffffffffffffffffffffffffffffff16639bca41e86040518163ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016105be9061159b565b600060405180830381600087803b1580156105d857600080fd5b505af11580156105ec573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506106159190810190611133565b94508073ffffffffffffffffffffffffffffffffffffffff16639bca41e86040518163ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161066a90611645565b600060405180830381600087803b15801561068457600080fd5b505af1158015610698573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052506106c19190810190611133565b93508073ffffffffffffffffffffffffffffffffffffffff16639bca41e86040518163ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016107169061169a565b600060405180830381600087803b15801561073057600080fd5b505af1158015610744573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525061076d9190810190611133565b92505b858585859b509b509b509b5050505050505050509193509193565b600080600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166359a48b656040805190810160405280600b81526020017f745f65766964656e6365320000000000000000000000000000000000000000008152506040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161083d9190611481565b602060405180830381600087803b15801561085757600080fd5b505af115801561086b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061088f91908101906110a0565b92508273ffffffffffffffffffffffffffffffffffffffff16635887ab246040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1580156108f557600080fd5b505af1158015610909573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061092d9190810190611077565b91508173ffffffffffffffffffffffffffffffffffffffff16631a391cb4896040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016109849190611610565b600060405180830381600087803b15801561099e57600080fd5b505af11580156109b2573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff16631a391cb4886040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401610a0b91906115bb565b600060405180830381600087803b158015610a2557600080fd5b505af1158015610a39573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff16631a391cb4876040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401610a929190611665565b600060405180830381600087803b158015610aac57600080fd5b505af1158015610ac0573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff16631a391cb4866040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401610b1991906116ba565b600060405180830381600087803b158015610b3357600080fd5b505af1158015610b47573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff16634c6f30c089846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401610ba29291906114d3565b602060405180830381600087803b158015610bbc57600080fd5b505af1158015610bd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610bf491908101906110c9565b90507fdfc533ec2b52797a1229dc2495dbd3f4948f7c4c982ec077ad9d80810ec5c1f981604051610c25919061144b565b60405180910390a16000876040518082805190602001908083835b602083101515610c655780518252602082019150602081019050602083039250610c40565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020889080600181540180825580915050906001820390600052602060002001600090919290919091509080519060200190610cd3929190610e70565b50507f81cbe947b4d82e1efbab9aeba4839157d5a42e17692aa17236e9d2d0f47fc7e8878960", "4051610d06929190611503565b60405180910390a1809350505050949350505050565b60606000826040518082805190602001908083835b602083101515610d565780518252602082019150602081019050602083039250610d31565b6001836020036101000a0380198251168184511680821785525050505050509050019150509081526020016040518091039020805480602002602001604051908101604052809291908181526020016000905b82821015610e65578382906000526020600020018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610e515780601f10610e2657610100808354040283529160200191610e51565b820191906000526020600020905b815481529060010190602001808311610e3457829003601f168201915b505050505081526020019060010190610da9565b505050509050919050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10610eb157805160ff1916838001178555610edf565b82800160010185558215610edf579182015b82811115610ede578251825591602001919060010190610ec3565b5b509050610eec9190610ef0565b5090565b610f1291905b80821115610f0e576000816000905550600101610ef6565b5090565b90565b6000610f2182516117ad565b905092915050565b6000610f3582516117bf565b905092915050565b6000610f4982516117d1565b905092915050565b6000610f5d82516117e3565b905092915050565b6000610f7182516117f5565b905092915050565b600082601f8301121515610f8c57600080fd5b8135610f9f610f9a8261171c565b6116ef565b91508082526020830160208301858383011115610fbb57600080fd5b610fc6838284611835565b50505092915050565b600082601f8301121515610fe257600080fd5b8151610ff5610ff08261171c565b6116ef565b9150808252602083016020830185838301111561101157600080fd5b61101c838284611844565b50505092915050565b60006020828403121561103757600080fd5b600061104584828501610f15565b91505092915050565b60006020828403121561106057600080fd5b600061106e84828501610f29565b91505092915050565b60006020828403121561108957600080fd5b600061109784828501610f3d565b91505092915050565b6000602082840312156110b257600080fd5b60006110c084828501610f51565b91505092915050565b6000602082840312156110db57600080fd5b60006110e984828501610f65565b91505092915050565b60006020828403121561110457600080fd5b600082013567ffffffffffffffff81111561111e57600080fd5b61112a84828501610f79565b91505092915050565b60006020828403121561114557600080fd5b600082015167ffffffffffffffff81111561115f57600080fd5b61116b84828501610fcf565b91505092915050565b6000806000806080858703121561118a57600080fd5b600085013567ffffffffffffffff8111156111a457600080fd5b6111b087828801610f79565b945050602085013567ffffffffffffffff8111156111cd57600080fd5b6111d987828801610f79565b935050604085013567ffffffffffffffff8111156111f657600080fd5b61120287828801610f79565b925050606085013567ffffffffffffffff81111561121f57600080fd5b61122b87828801610f79565b91505092959194509250565b600061124282611755565b8084526020840193508360208202850161125b85611748565b60005b84811015611294578383038852611276838351611317565b925061128182611776565b915060208801975060018101905061125e565b508196508694505050505092915050565b6112ae816117ff565b82525050565b6112bd81611811565b82525050565b6112cc816117a3565b82525050565b6112db81611823565b82525050565b60006112ec8261176b565b808452611300816020860160208601611844565b61130981611877565b602085010191505092915050565b600061132282611760565b808452611336816020860160208601611844565b61133f81611877565b602085010191505092915050565b6000600582527f6f776e65720000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000600382527f6b657900000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000600482527f64617461000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000600582527f65686173680000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600060208201905081810360008301526114438184611237565b905092915050565b600060208201905061146060008301846112c3565b92915050565b600060208201905061147b60008301846112d2565b92915050565b6000602082019050818103600083015261149b8184611317565b905092915050565b600060408201905081810360008301526114bd81856112e1565b90506114cc60208301846112a5565b9392505050565b600060408201905081810360008301526114ed81856112e1565b90506114fc60208301846112b4565b9392505050565b6000604082019050818103600083015261151d81856112e1565b9050818103602083015261153181846112e1565b90509392505050565b6000608082019050818103600083015261155481876112e1565b9050818103602083015261156881866112e1565b9050818103604083015261157c81856112e1565b9050818103606083015261159081846112e1565b905095945050505050565b600060208201905081810360008301526115b48161134d565b9050919050565b600060408201905081810360008301526115d48161134d565b905081810360208301526115e881846112e1565b905092915050565b6000602082019050818103600083015261160981611384565b9050919050565b6000604082019050818103600083015261162981611384565b9050818103602083015261163d81846112e1565b905092915050565b6000602082019050818103600083015261165e816113bb565b9050919050565b6000604082019050818103600083015261167e816113bb565b9050818103602083015261169281846112e1565b905092915050565b600060208201905081810360008301526116b3816113f2565b9050919050565b600060408201905081810360008301526116d3816113f2565b905081810360208301526116e781846112e1565b905092915050565b6000604051905081810181811067ffffffffffffffff8211171561171257600080fd5b8060405250919050565b600067ffffffffffffffff82111561173357600080fd5b601f19601f8301169050602081019050919050565b6000602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006117b882611783565b9050919050565b60006117ca82611783565b9050919050565b60006117dc82611783565b9050919050565b60006117ee82611783565b9050919050565b6000819050919050565b600061180a82611783565b9050919050565b600061181c82611783565b9050919050565b600061182e826117a3565b9050919050565b82818337600083830152505050565b60005b83811015611862578082015181840152602081019050611847565b83811115611871576000848401525b50505050565b6000601f19601f83011690509190505600a265627a7a72305820c3001d1e2182efdc4625ca4c32fb5fd750b25e160e686d0d80ca4bdc0b6771136c6578706572696d656e74616cf50037"};

    public static final String SM_BINARY = org.fisco.bcos.sdk.utils.StringUtils.joinAll("", SM_BINARY_ARRAY);

    public static final String[] ABI_ARRAY = {"[{\"constant\":false,\"inputs\":[{\"name\":\"owner\",\"type\":\"string\"}],\"name\":\"selectKeysByOwner\",\"outputs\":[{\"name\":\"\",\"type\":\"string[]\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"key\",\"type\":\"string\"},{\"name\":\"owner\",\"type\":\"string\"},{\"name\":\"data\",\"type\":\"string\"},{\"name\":\"ehash\",\"type\":\"string\"}],\"name\":\"insert\",\"outputs\":[{\"name\":\"\",\"type\":\"int256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"key\",\"type\":\"string\"}],\"name\":\"select\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"},{\"name\":\"\",\"type\":\"string\"},{\"name\":\"\",\"type\":\"string\"},{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"count\",\"type\":\"int256\"}],\"name\":\"CreateResult\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"count\",\"type\":\"int256\"}],\"name\":\"InsertResult\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"count\",\"type\":\"int256\"}],\"name\":\"UpdateResult\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"count\",\"type\":\"int256\"}],\"name\":\"RemoveResult\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"count\",\"type\":\"uint256\"}],\"name\":\"CheckKeysLength\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"owner\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"key\",\"type\":\"string\"}],\"name\":\"SaveOwnerKeys\",\"type\":\"event\"}]"};

    public static final String ABI = org.fisco.bcos.sdk.utils.StringUtils.joinAll("", ABI_ARRAY);

    public static final String FUNC_SELECTKEYSBYOWNER = "selectKeysByOwner";

    public static final String FUNC_INSERT = "insert";

    public static final String FUNC_SELECT = "select";

    public static final Event CREATERESULT_EVENT = new Event("CreateResult",
            Arrays.<TypeReference<?>>asList(new TypeReference<Int256>() {
            }));
    ;

    public static final Event INSERTRESULT_EVENT = new Event("InsertResult",
            Arrays.<TypeReference<?>>asList(new TypeReference<Int256>() {
            }));
    ;

    public static final Event UPDATERESULT_EVENT = new Event("UpdateResult",
            Arrays.<TypeReference<?>>asList(new TypeReference<Int256>() {
            }));
    ;

    public static final Event REMOVERESULT_EVENT = new Event("RemoveResult",
            Arrays.<TypeReference<?>>asList(new TypeReference<Int256>() {
            }));
    ;

    public static final Event CHECKKEYSLENGTH_EVENT = new Event("CheckKeysLength",
            Arrays.<TypeReference<?>>asList(new TypeReference<Uint256>() {
            }));
    ;

    public static final Event SAVEOWNERKEYS_EVENT = new Event("SaveOwnerKeys",
            Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {
            }, new TypeReference<Utf8String>() {
            }));
    ;

    protected EvidenceTable(String contractAddress, Client client, CryptoKeyPair credential) {
        super(getBinary(client.getCryptoSuite()), contractAddress, client, credential);
    }

    public static String getBinary(CryptoSuite cryptoSuite) {
        return (cryptoSuite.getCryptoTypeConfig() == CryptoType.ECDSA_TYPE ? BINARY : SM_BINARY);
    }

    public TransactionReceipt selectKeysByOwner(String owner) {
        final Function function = new Function(
                FUNC_SELECTKEYSBYOWNER,
                Arrays.<Type>asList(new org.fisco.bcos.sdk.abi.datatypes.Utf8String(owner)),
                Collections.<TypeReference<?>>emptyList());
        return executeTransaction(function);
    }

    public byte[] selectKeysByOwner(String owner, TransactionCallback callback) {
        final Function function = new Function(
                FUNC_SELECTKEYSBYOWNER,
                Arrays.<Type>asList(new org.fisco.bcos.sdk.abi.datatypes.Utf8String(owner)),
                Collections.<TypeReference<?>>emptyList());
        return asyncExecuteTransaction(function, callback);
    }

    public String getSignedTransactionForSelectKeysByOwner(String owner) {
        final Function function = new Function(
                FUNC_SELECTKEYSBYOWNER,
                Arrays.<Type>asList(new org.fisco.bcos.sdk.abi.datatypes.Utf8String(owner)),
                Collections.<TypeReference<?>>emptyList());
        return createSignedTransaction(function);
    }

    public Tuple1<String> getSelectKeysByOwnerInput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function = new Function(FUNC_SELECTKEYSBYOWNER,
                Arrays.<Type>asList(),
                Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {
                }));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple1<String>(

                (String) results.get(0).getValue()
        );
    }

    public Tuple1<List<String>> getSelectKeysByOwnerOutput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getOutput();
        final Function function = new Function(FUNC_SELECTKEYSBYOWNER,
                Arrays.<Type>asList(),
                Arrays.<TypeReference<?>>asList(new TypeReference<DynamicArray<Utf8String>>() {
                }));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple1<List<String>>(

                convertToNative((List<Utf8String>) results.get(0).getValue())
        );
    }

    public TransactionReceipt insert(String key, String owner, String data, String ehash) {
        final Function function = new Function(
                FUNC_INSERT,
                Arrays.<Type>asList(new org.fisco.bcos.sdk.abi.datatypes.Utf8String(key),
                        new org.fisco.bcos.sdk.abi.datatypes.Utf8String(owner),
                        new org.fisco.bcos.sdk.abi.datatypes.Utf8String(data),
                        new org.fisco.bcos.sdk.abi.datatypes.Utf8String(ehash)),
                Collections.<TypeReference<?>>emptyList());
        return executeTransaction(function);
    }

    public byte[] insert(String key, String owner, String data, String ehash, TransactionCallback callback) {
        final Function function = new Function(
                FUNC_INSERT,
                Arrays.<Type>asList(new org.fisco.bcos.sdk.abi.datatypes.Utf8String(key),
                        new org.fisco.bcos.sdk.abi.datatypes.Utf8String(owner),
                        new org.fisco.bcos.sdk.abi.datatypes.Utf8String(data),
                        new org.fisco.bcos.sdk.abi.datatypes.Utf8String(ehash)),
                Collections.<TypeReference<?>>emptyList());
        return asyncExecuteTransaction(function, callback);
    }

    public String getSignedTransactionForInsert(String key, String owner, String data, String ehash) {
        final Function function = new Function(
                FUNC_INSERT,
                Arrays.<Type>asList(new org.fisco.bcos.sdk.abi.datatypes.Utf8String(key),
                        new org.fisco.bcos.sdk.abi.datatypes.Utf8String(owner),
                        new org.fisco.bcos.sdk.abi.datatypes.Utf8String(data),
                        new org.fisco.bcos.sdk.abi.datatypes.Utf8String(ehash)),
                Collections.<TypeReference<?>>emptyList());
        return createSignedTransaction(function);
    }

    public Tuple4<String, String, String, String> getInsertInput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getInput().substring(10);
        final Function function = new Function(FUNC_INSERT,
                Arrays.<Type>asList(),
                Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {
                }, new TypeReference<Utf8String>() {
                }, new TypeReference<Utf8String>() {
                }, new TypeReference<Utf8String>() {
                }));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple4<String, String, String, String>(

                (String) results.get(0).getValue(),
                (String) results.get(1).getValue(),
                (String) results.get(2).getValue(),
                (String) results.get(3).getValue()
        );
    }

    public Tuple1<BigInteger> getInsertOutput(TransactionReceipt transactionReceipt) {
        String data = transactionReceipt.getOutput();
        final Function function = new Function(FUNC_INSERT,
                Arrays.<Type>asList(),
                Arrays.<TypeReference<?>>asList(new TypeReference<Int256>() {
                }));
        List<Type> results = FunctionReturnDecoder.decode(data, function.getOutputParameters());
        return new Tuple1<BigInteger>(

                (BigInteger) results.get(0).getValue()
        );
    }

    public Tuple4<String, String, String, String> select(String key) throws ContractException {
        final Function function = new Function(FUNC_SELECT,
                Arrays.<Type>asList(new org.fisco.bcos.sdk.abi.datatypes.Utf8String(key)),
                Arrays.<TypeReference<?>>asList(new TypeReference<Utf8String>() {
                }, new TypeReference<Utf8String>() {
                }, new TypeReference<Utf8String>() {
                }, new TypeReference<Utf8String>() {
                }));
        List<Type> results = executeCallWithMultipleValueReturn(function);
        return new Tuple4<String, String, String, String>(
                (String) results.get(0).getValue(),
                (String) results.get(1).getValue(),
                (String) results.get(2).getValue(),
                (String) results.get(3).getValue());
    }

    public List<CreateResultEventResponse> getCreateResultEvents(TransactionReceipt transactionReceipt) {
        List<Contract.EventValuesWithLog> valueList = extractEventParametersWithLog(CREATERESULT_EVENT, transactionReceipt);
        ArrayList<CreateResultEventResponse> responses = new ArrayList<CreateResultEventResponse>(valueList.size());
        for (Contract.EventValuesWithLog eventValues : valueList) {
            CreateResultEventResponse typedResponse = new CreateResultEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse.count = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public void subscribeCreateResultEvent(String fromBlock, String toBlock, List<String> otherTopics, EventCallback callback) {
        String topic0 = eventEncoder.encode(CREATERESULT_EVENT);
        subscribeEvent(ABI, BINARY, topic0, fromBlock, toBlock, otherTopics, callback);
    }

    public void subscribeCreateResultEvent(EventCallback callback) {
        String topic0 = eventEncoder.encode(CREATERESULT_EVENT);
        subscribeEvent(ABI, BINARY, topic0, callback);
    }

    public List<InsertResultEventResponse> getInsertResultEvents(TransactionReceipt transactionReceipt) {
        List<Contract.EventValuesWithLog> valueList = extractEventParametersWithLog(INSERTRESULT_EVENT, transactionReceipt);
        ArrayList<InsertResultEventResponse> responses = new ArrayList<InsertResultEventResponse>(valueList.size());
        for (Contract.EventValuesWithLog eventValues : valueList) {
            InsertResultEventResponse typedResponse = new InsertResultEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse.count = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public void subscribeInsertResultEvent(String fromBlock, String toBlock, List<String> otherTopics, EventCallback callback) {
        String topic0 = eventEncoder.encode(INSERTRESULT_EVENT);
        subscribeEvent(ABI, BINARY, topic0, fromBlock, toBlock, otherTopics, callback);
    }

    public void subscribeInsertResultEvent(EventCallback callback) {
        String topic0 = eventEncoder.encode(INSERTRESULT_EVENT);
        subscribeEvent(ABI, BINARY, topic0, callback);
    }

    public List<UpdateResultEventResponse> getUpdateResultEvents(TransactionReceipt transactionReceipt) {
        List<Contract.EventValuesWithLog> valueList = extractEventParametersWithLog(UPDATERESULT_EVENT, transactionReceipt);
        ArrayList<UpdateResultEventResponse> responses = new ArrayList<UpdateResultEventResponse>(valueList.size());
        for (Contract.EventValuesWithLog eventValues : valueList) {
            UpdateResultEventResponse typedResponse = new UpdateResultEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse.count = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public void subscribeUpdateResultEvent(String fromBlock, String toBlock, List<String> otherTopics, EventCallback callback) {
        String topic0 = eventEncoder.encode(UPDATERESULT_EVENT);
        subscribeEvent(ABI, BINARY, topic0, fromBlock, toBlock, otherTopics, callback);
    }

    public void subscribeUpdateResultEvent(EventCallback callback) {
        String topic0 = eventEncoder.encode(UPDATERESULT_EVENT);
        subscribeEvent(ABI, BINARY, topic0, callback);
    }

    public List<RemoveResultEventResponse> getRemoveResultEvents(TransactionReceipt transactionReceipt) {
        List<Contract.EventValuesWithLog> valueList = extractEventParametersWithLog(REMOVERESULT_EVENT, transactionReceipt);
        ArrayList<RemoveResultEventResponse> responses = new ArrayList<RemoveResultEventResponse>(valueList.size());
        for (Contract.EventValuesWithLog eventValues : valueList) {
            RemoveResultEventResponse typedResponse = new RemoveResultEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse.count = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public void subscribeRemoveResultEvent(String fromBlock, String toBlock, List<String> otherTopics, EventCallback callback) {
        String topic0 = eventEncoder.encode(REMOVERESULT_EVENT);
        subscribeEvent(ABI, BINARY, topic0, fromBlock, toBlock, otherTopics, callback);
    }

    public void subscribeRemoveResultEvent(EventCallback callback) {
        String topic0 = eventEncoder.encode(REMOVERESULT_EVENT);
        subscribeEvent(ABI, BINARY, topic0, callback);
    }

    public List<CheckKeysLengthEventResponse> getCheckKeysLengthEvents(TransactionReceipt transactionReceipt) {
        List<Contract.EventValuesWithLog> valueList = extractEventParametersWithLog(CHECKKEYSLENGTH_EVENT, transactionReceipt);
        ArrayList<CheckKeysLengthEventResponse> responses = new ArrayList<CheckKeysLengthEventResponse>(valueList.size());
        for (Contract.EventValuesWithLog eventValues : valueList) {
            CheckKeysLengthEventResponse typedResponse = new CheckKeysLengthEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse.count = (BigInteger) eventValues.getNonIndexedValues().get(0).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public void subscribeCheckKeysLengthEvent(String fromBlock, String toBlock, List<String> otherTopics, EventCallback callback) {
        String topic0 = eventEncoder.encode(CHECKKEYSLENGTH_EVENT);
        subscribeEvent(ABI, BINARY, topic0, fromBlock, toBlock, otherTopics, callback);
    }

    public void subscribeCheckKeysLengthEvent(EventCallback callback) {
        String topic0 = eventEncoder.encode(CHECKKEYSLENGTH_EVENT);
        subscribeEvent(ABI, BINARY, topic0, callback);
    }

    public List<SaveOwnerKeysEventResponse> getSaveOwnerKeysEvents(TransactionReceipt transactionReceipt) {
        List<Contract.EventValuesWithLog> valueList = extractEventParametersWithLog(SAVEOWNERKEYS_EVENT, transactionReceipt);
        ArrayList<SaveOwnerKeysEventResponse> responses = new ArrayList<SaveOwnerKeysEventResponse>(valueList.size());
        for (Contract.EventValuesWithLog eventValues : valueList) {
            SaveOwnerKeysEventResponse typedResponse = new SaveOwnerKeysEventResponse();
            typedResponse.log = eventValues.getLog();
            typedResponse.owner = (String) eventValues.getNonIndexedValues().get(0).getValue();
            typedResponse.key = (String) eventValues.getNonIndexedValues().get(1).getValue();
            responses.add(typedResponse);
        }
        return responses;
    }

    public void subscribeSaveOwnerKeysEvent(String fromBlock, String toBlock, List<String> otherTopics, EventCallback callback) {
        String topic0 = eventEncoder.encode(SAVEOWNERKEYS_EVENT);
        subscribeEvent(ABI, BINARY, topic0, fromBlock, toBlock, otherTopics, callback);
    }

    public void subscribeSaveOwnerKeysEvent(EventCallback callback) {
        String topic0 = eventEncoder.encode(SAVEOWNERKEYS_EVENT);
        subscribeEvent(ABI, BINARY, topic0, callback);
    }

    public static EvidenceTable load(String contractAddress, Client client, CryptoKeyPair credential) {
        return new EvidenceTable(contractAddress, client, credential);
    }

    public static EvidenceTable deploy(Client client, CryptoKeyPair credential) throws ContractException {
        return deploy(EvidenceTable.class, client, credential, getBinary(client.getCryptoSuite()), "");
    }

    public static class CreateResultEventResponse {
        public TransactionReceipt.Logs log;

        public BigInteger count;
    }

    public static class InsertResultEventResponse {
        public TransactionReceipt.Logs log;

        public BigInteger count;
    }

    public static class UpdateResultEventResponse {
        public TransactionReceipt.Logs log;

        public BigInteger count;
    }

    public static class RemoveResultEventResponse {
        public TransactionReceipt.Logs log;

        public BigInteger count;
    }

    public static class CheckKeysLengthEventResponse {
        public TransactionReceipt.Logs log;

        public BigInteger count;
    }

    public static class SaveOwnerKeysEventResponse {
        public TransactionReceipt.Logs log;

        public String owner;

        public String key;
    }
}
